﻿using B.MES.Customer.Domain;
using B.MES.Customer.Domain.DTO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace B.MES.Customer.Application.IApplication
{
    public interface IProductApplication : IBaseApplication<Product>
    {
        /// <summary>
        /// 绑定产品属性表的下拉框
        /// </summary>
        /// <returns>返回产品属性表数据</returns>
        List<Matattribute> GetProductShow();
        /// <summary>
        /// 绑定产品类别表的下拉框
        /// </summary>
        /// <returns>返回产品类别表数据</returns>
        List<MatTypeinfo> GetProductinfoShow();
        /// <summary>
        /// 绑定产品单位表的下拉框
        /// </summary>
        /// <returns> 产品集合 </returns>
        /// <returns>返回产品单位表数据</returns>
        List<MatUnitInfo> GetProductUnitInfoShow();

        /// <summary>
        /// 添加产品
        /// </summary>
        /// <param name="productDTO"></param>
        /// <returns></returns>
        APIResult<ProductDTO> AddProduct(ProductDTO productDTO);

        /// <summary>
        /// 显示产品列表
        /// </summary>
        /// <param name="product_Name">产品名称</param>
        /// <param name="model_Number">规格型号</param>
        /// <param name="brand">品牌</param>
        /// <param name="page">页码</param>
        /// <param name="size">页容量</param>
        /// <returns></returns>
        PageApiResut<ProductDTO> GetUserListByKeyword(string? product_Name, string? model_Number, string? brand, int page, int size);

        /// <summary>
        /// 删除产品信息
        /// </summary>
        /// <param name="product_Id"></param>
        /// <returns></returns>
        APIResult<Product> DeleteData(int product_Id);

        /// <summary>
        /// 产品反填
        /// </summary>
        /// <param name="product_Id"></param>
        /// <returns></returns>
        APIResult<ProductListDTO> GetStockInSel(int product_Id);

        /// <summary>
        /// 产品修改
        /// </summary>
        /// <param name="productDTO"></param>
        /// <returns></returns>
        APIResult<ProductDTO> UpdateProductSel(ProductDTO productDTO);
    }
}
